package lxt.dao;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
/**
 * curd父类dao
 * @author Lit
 *
 */
public interface ABseDao {

	/** 
	 * 获取session
	 *
	 * @return session
	 * @see    参考类1
	 * @see    参考类2#类方法或类属性
	 *
	 */
	public Session getHibernateSession();
	
	/** 
	 * 保存
	 *
	 * @param object
	 *
	 */
	public void save(Object object);

	/** 
	 * 删除
	 *
	 * @param clazz
	 * @param id
	 *
	 */
	public void delete(Class<?> clazz, Serializable id);
	
	/** 
	 * 更新
	 *
	 * @param object
	 *
	 */
	public void update(Object object);
	
	/** 
	 * 查询所有对象
	 *
	 * @param clazz
	 * @return objectList<?>
	 *
	 */
	public List<?> loadAll(Class<?> clazz);

	/** 
	 * 根据ID查询对象
	 *
	 * @param clazz
	 * @param id
	 * @return object
	 *
	 */
	public Object get(Class<?> clazz, Serializable id);
	
	/**
	 * 分页查询
	 * 
	 * @param hql
	 *            查询语句
	 * @param param
	 *            查询条件
	 * @param offset
	 *            开始记录
	 * @param length
	 *            一次查询几条记录
	 * @return
	 */
	public List<?> queryForPage(final String hql,final ArrayList<Object> param, final int offset, final int length);

	/**
	 * 查询所有记录数
	 * 
	 * @param hql
	 *            查询的条件
	 * @return 总记录数
	 */
	public int getAllRowCount(String hql,ArrayList<Object> param);
	
}
